AWS Code サービス群を活用して、CI/CD のための構成を構築しよう!のハンズオンをやってみた
CI/CD入門ハンズオン
AWS DevOps Engineer Professionalの勉強のためにCodeシリーズを触ろうと思ったら、ほどよいハンズオンを見つけたのでやってみました。
- AWS Codeシリーズをまとめて学習できるハンズオン
git push
からのS3とEC2上にファイルが自動的に配置されるCI/CDを体験- 動画見ながら手を動かしても2時間で終わりました
ハンズオン動画・資料
AWS Hands-on for Beginners AWS Code サービス群を活用して、CI/CD のための構成を構築しよう!
Agenda
1. 今回のハンズオンので構築する構成の紹介 + ハンズオンで登場するサービスの紹介
2. S3 をデプロイ先とした、CI/CD 環境を構築する【事前準備 + CodeCommit編】
3. S3 をデプロイ先とした、CI/CD 環境を構築する【CodePipeline 編】
4. EC2 インスタンスをデプロイ先とした、CI/CD 環境を構築する【事前準備編】
5. EC2 インスタンスをデプロイ先とした、CI/CD 環境を構築する【CodeBuild 編】
6. EC2 インスタンスをデプロイ先とした、CI/CD 環境を構築する【CodeDeploy 編】
7. EC2 インスタンスをデプロイ先とした、CI/CD 環境を構築する【CodePipeline 編】
8. 削除手順の紹介、本シリーズのまとめ、Next Step のご案内
学べること
S3とEC2にWEBサイトを作り、手元(Cloud9)でWEBサイトのソースファイルを編集してgit push
すると後は自動的にS3のファイルを更新と、EC2上のファイルを更新しWEBサイトが更新されるといった流れを手を動かして学べました。
▲画像はハンズオンのアンケート回答後にダウンロードできる資料より
登場する主なサービス
- AWS CodeCommit
- AWS CodeBuild
- AWS CodeDeploy
- AWS CodePipeline
ハンズオンの流れ
ハンズオン動画を見て説明聞きながら進めていきます。手を動かしても2時間で終わりました。
動画を見ながらマネジメントコンソールを操作するのでモニターが2枚あると進めやすいと思います。
ハンズオン内で作成するファイルを事前にダウンロードできる安心設計です。ダウンロードしたファイルを使えばつまづくこともないでしょう、動画内の解説も丁寧です。
ちなみに複雑な設定はしなかったためindex.html
と、S3バケットポリシー(sample-bucketpolicy.json
)をダウンロードしたファイルのまま使いましたが、他のファイルはハンズオン動画内の説明から公式ドキュメントを参照し必要なコードのコピペと軽微な変更だけで済んだので利用しませんでした。
手を動かした内容まとめ
- ハンズオンの概要説明
- CodeCommitにリポジトリ作成と、ファイルの編集環境としてCloud9を準備
- CodePipelineの設定と、git pushからのS3にファイルが置かれることを確認
- CodeDeployのデプロイ先WEBサーバ用EC2インスタンスを準備
- CoudeBuildの設定
- CodeDeployの設定と、CodeBuildからのCodeDeployを手動テスト
- CodePipelineの設定し、git pushからのCodeBuild → CodeDeployを楽しむ
- 作ったリソースのお片付け
メモ書き
ハンズオンを進めた際のメモと、エラーの切り分け時のメモを残します。
02. S3 をデプロイ先とした、CI/CD 環境を構築する【事前準備 + CodeCommit編】
- 動画内の説明で登場したリンク先
04. S3 をデプロイ先とした、CI/CD 環境を構築する【CodePipeline 編】
- 動画内の説明で登場したリンク先
Install the CodeDeploy agent for Amazon Linux or RHEL - AWS CodeDeploy
05. EC2 インスタンスをデプロイ先とした、CI/CD 環境を構築する【CodeBuild 編】
- 動画内の説明で登場したリンク先
Build specification reference for CodeBuild - AWS CodeBuild
06. EC2 インスタンスをデプロイ先とした、CI/CD 環境を構築する【CodeDeploy 編】
初回のCodeBuildからのCodeDeployのデプロイに失敗しました。エラーメッセージからappspec.yml
内の記述したaws deploy push...
コマンドの入力間違いかと思い切り分けしました。
エラーメッセージ
[Container] 2020/09/19 02:32:17 Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: aws deploy push --application-name cicd-handson-app --s3-location s3://ohmura-cicd-handson-artifact/artivact.zip --source src. Reason: exit status 255
CodeBuildのビルドログ
赤い文字が上記エラーメッセージ
aws deploy push...
の記述ミスでありませんでした。
切り分けのためCloud9
のターミナルにaws deploy push...
のコマンドをコピペで実行。
/home/ec2-user/environment/cicd-handson/src/appspec.yml was not found
appspec.yml
がない...だと...?
原因はappspec.yml
ファイル名をタイポしてました。正しいスペルに修正。事前にダウンロードしたファイルの中からappspce.yml
を素直に使えばこのようなトラブルには合わないです...
$ ll /home/ec2-user/environment/cicd-handson/src/ total 8 -rw-r--r-- 1 ec2-user ec2-user 84 Sep 19 02:25 appspce.yml # 今回のエラー原因 -rw-r--r-- 1 ec2-user ec2-user 156 Sep 19 01:20 index.html
おわりに
久しくCodeシリーズを触っていなかったのでAWS DOPの試験勉強もかねて手を動かしてみました。テキパキ進めたら2時間もかからないと思います。手軽に試せて良かったです。
その他 AWS Hands-on for Beginnersのご紹介
今回のCI/CDハンズオン以外にもAWSハンズオン資料が公開されておりますのでぜひご覧ください。
実際に手を動かして学ぶ!AWS Hands-on for Beginners のご紹介 | Amazon Web Services ブログ
ハンズオン資料 | AWS クラウドサービス活用資料集
以上、コンサル部の大村@網走でした。